---@class DIYUtility
local Utility = require "packages.diy_utility._base"

-- 不用return


--- SkillSwitch 转换技的数据
---@class SkillSwitchDataSpec
---@field public who ServerPlayer @ 拥有此技能的角色
---@field public skill Skill @ 有关的技能




---@class Utility.SkillSwitchData: SkillSwitchDataSpec, TriggerData
Utility.SkillSwitchData = TriggerData:subclass("SkillSwitchData")

--- 转换技 TriggerEvent
---@class Utility.SkillSwitchTE: TriggerEvent
---@field public data Utility.SkillSwitchData
Utility.SkillSwitchTE = TriggerEvent:subclass("SkillSwitchEvent")

--- 周始（正常使用转换技且结算后，由最后一项而切换至最初一项触发）
---@class Utility.SkillSwitchLoopback: Utility.SkillSwitchTE
Utility.SkillSwitchLoopback = Utility.SkillSwitchTE:subclass("Utility.SkillSwitchLoopback")


---@alias SkillSwitchTrigFunc fun(self: TriggerSkill, event: Utility.SkillSwitchTE,
---  target: ServerPlayer, player: ServerPlayer, data: Utility.SkillSwitchData):any

---@class SkillSkeleton
---@field public addEffect fun(self: SkillSkeleton, key: Utility.SkillSwitchTE,
---  data: TrigSkelSpec<SkillSwitchTrigFunc>, attr: TrigSkelAttribute?): SkillSkeleton
